package com.cdu.mapper;

import com.cdu.pojo.dto.FavoriteDTO;
import com.cdu.pojo.vo.FavoriteVO;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface FavoriteMapper {

    /**
     * 插入收藏记录
     * @param favoriteDTO 收藏数据传输对象
     * @return 影响的行数
     */
    @Insert("INSERT INTO t_favorite (user_id, product_id, created_user, created_time, modified_user, modified_time) " +
            "VALUES (#{userId}, #{productId}, #{createdUser}, #{createdTime}, #{modifiedUser}, #{modifiedTime})")
    @Options(useGeneratedKeys = true, keyProperty = "id")
    int insertFavorite(FavoriteDTO favoriteDTO);

    /**
     * 根据ID删除收藏记录
     * @param id 收藏记录ID
     * @return 影响的行数
     */
    @Delete("DELETE FROM t_favorite WHERE id = #{id}")
    int deleteFavoriteById(@Param("id") Integer id);

    /**
     * 检查用户是否收藏了某个商品
     * @param userId 用户ID
     * @param productId 商品ID
     * @return 收藏数据传输对象，如果未收藏则返回null
     */
    @Select("SELECT * FROM t_favorite WHERE user_id = #{userId} AND product_id = #{productId}")
    FavoriteDTO findFavoriteByUserIdAndProductId(@Param("userId") Integer userId, @Param("productId") Integer productId);

    /**
     * 查询用户的收藏列表
     * @param userId 用户ID
     * @return 收藏列表
     */
    @Select("SELECT * FROM t_favorite WHERE user_id = #{userId}")
    List<FavoriteVO> getFavoriteListByUserId(@Param("userId") Integer userId);
}